package com.fowo.api.model.fbainvoice;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 发货单 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class FBAInvoiceImportPo {

  /** 发货单号 */
  @ExcelProperty("发货单号")
  private String inoviceCode;

  /** 发货仓库 */
  @ExcelProperty("*发货仓库")
  @NotBlank(message = "发货仓库不能为空")
  @Size(max = 50, message = "发货仓库长度不能超过50")
  private String deliveryWarehouseName;

  @ExcelIgnore
  @Schema(title = "*发货仓库")
  private String deliveryWarehouse;

  /** 货件号 */
  @ExcelProperty("货件号")
  @Size(max = 50, message = "货件号长度不能超过50")
  private String shipmentCode;

  /** 运输方式 */
  @ExcelProperty("运输方式")
  @EnumsString(
    value = { "快递", "海运", "空运", "其他" },
    message = "运输方式只能是“快递”, “海运”, “空运”, “其他”中的一个"
  )
  private String transportMode;

  /** 物流商 */
  @ExcelProperty("物流商")
  @Size(max = 50, message = "物流商长度不能超过50")
  private String logisticsProvider;

  /** 物流商单号 */
  @ExcelProperty("物流商单号")
  @Size(max = 50, message = "物流商单号长度不能超过50")
  private String logisticsTrackingNumber;

  /** 物流渠道 */
  @ExcelProperty("物流渠道")
  @Size(max = 50, message = "物流渠道长度不能超过50")
  private String logisticsChannel;

  /** 物流信息 */
  @ExcelProperty("物流信息")
  @Size(max = 255, message = "物流信息长度不能超过255")
  private String logisticsInfo;

  /** 发货人 */
  @ExcelProperty("发货人")
  @Size(max = 50, message = "发货人长度不能超过50")
  private String sendName;

  /** 发货时间 */
  @ExcelProperty("发货时间")
  @DateTimeString(message = "发货时间不是有效的时间日期格式")
  private String sendTime;

  /** 预计到货时间 */
  @ExcelProperty("预计到货时间")
  @DateTimeString(message = "预计到货时间不是有效的时间日期格式")
  private String expectReachTime;

  /** 实际发货时间 */
  @ExcelProperty("实际发货时间")
  @DateTimeString(message = "实际发货时间不是有效的时间日期格式")
  private String realitySendTime;

  /** 物流中心编码 */
  @ExcelProperty("物流中心编码")
  @Size(max = 50, message = "物流中心编码长度不能超过50")
  private String logisticsCenterCode;

  /** 付款状态 */
  @ExcelProperty("付款状态")
  private String paymentStatus;

  /** 发货状态 */
  @ExcelProperty("发货状态")
  private String invoiceStatus;

  /** 打印状态 */
  @ExcelProperty("打印状态")
  @EnumsString(
    value = { "未打印", "已打印" },
    message = "打印状态只能是“未打印”, “已打印”中的一个"
  )
  private String printStatus;

  /** 打印数量 */
  @ExcelProperty("打印数量")
  @IntegerString(
    message = "打印数量数值格式不正确",
    label = "打印数量",
    min = 0
  )
  private String printNum;

  /** 拣货状态 */
  @ExcelProperty("拣货状态")
  @EnumsString(
    value = { "未拣货", "已拣货" },
    message = "拣货状态只能是“未拣货”, “已拣货”中的一个"
  )
  private String isPick;

  /** 拣货时间 */
  @ExcelProperty("拣货时间")
  @DateTimeString(message = "拣货时间不是有效的时间日期格式")
  private String pickTime;

  /** 计划发货时间 */
  @ExcelProperty("计划发货时间")
  @DateTimeString(message = "计划发货时间不是有效的时间日期格式")
  private String shipmentPlanTime;

  /** 物流状态 */
  @ExcelProperty("物流状态")
  @Size(max = 50, message = "物流状态长度不能超过50")
  private String logisticsStatus;

  /** VAT税号 */
  @ExcelProperty("VAT税号")
  @Size(max = 50, message = "VAT税号长度不能超过50")
  private String vat;

  /** 负责人 */
  @ExcelProperty("负责人")
  @Size(max = 50, message = "负责人长度不能超过50")
  private String principal;

  /** 创建人 */
  @ExcelProperty("创建人")
  @Size(max = 50, message = "创建人长度不能超过50")
  private String lxCreateUser;

  /** 物流预计时效 */
  @ExcelProperty("物流预计时效")
  @IntegerString(
    message = "物流预计时效数值格式不正确",
    label = "物流预计时效",
    min = 0
  )
  private String logisticsExpectedAging;

  /** 分摊方式 */
  @ExcelProperty("分摊方式")
  private String allocationType;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 1024, message = "备注长度不能超过1024")
  private String remark;

  /** 附件 */
  @ExcelProperty("附件")
  @Size(max = 500, message = "附件长度不能超过500")
  private String file;

  /** 是否推送出库单 */
  @ExcelProperty("是否推送出库单")
  @BooleanString(message = "是否推送出库单格式不正确，请使用“是”，“否”")
  private String isOut;

  /** 是否锁库存 */
  @ExcelProperty("是否锁库存")
  @EnumsString(
    value = { "是", "否" },
    message = "是否锁库存只能是“是”, “否”中的一个"
  )
  private String islockinventory;

  /** 发货产品 */
  @ExcelProperty("发货产品")
  @Size(max = 50, message = "发货产品长度不能超过50")
  private String productitems;

  /** 计划发货量 */
  @ExcelProperty("计划发货量")
  private String planSendQuantity;

  /** 申报量 */
  @ExcelProperty("申报量")
  private String declarationQuantity;

  /** 发货量 */
  @ExcelProperty("发货量")
  private String sendQuantity;

  /** 运输方式 */
  @ExcelProperty("运输方式")
  @EnumsString(
    value = { "海派", "空派" },
    message = "运输方式只能是“海派”, “空派”中的一个"
  )
  private String modeoftransport;

  /** 物流商 */
  @ExcelProperty("物流商")
  @Size(max = 50, message = "物流商长度不能超过50")
  private String logisticsprovider1Name;

  @ExcelIgnore
  @Schema(title = "物流商")
  private String logisticsprovider1;

  /** 物流渠道 */
  @ExcelProperty("物流渠道")
  @Size(max = 50, message = "物流渠道长度不能超过50")
  private String logisticsChannel1Name;

  @ExcelIgnore
  @Schema(title = "物流渠道")
  private String logisticsChannel1;

  /** 计费规则 */
  @ExcelProperty("计费规则")
  @Size(max = 50, message = "计费规则长度不能超过50")
  private String billingrules;

  /** 材积参数 */
  @ExcelProperty("材积参数")
  @Size(max = 50, message = "材积参数长度不能超过50")
  private String volumeparame;

  /** 收件方式 */
  @ExcelProperty("收件方式")
  @EnumsString(
    value = { "上门揽收", "送货上门" },
    message = "收件方式只能是“上门揽收”, “送货上门”中的一个"
  )
  private String receivingmethod;

  /** 揽收时间 */
  @ExcelProperty("揽收时间")
  @DateString(message = "揽收时间不是有效的日期格式")
  private String collectiontime;

  /** 一般贸易 */
  @ExcelProperty("一般贸易")
  @EnumsString(
    value = { "是", "否" },
    message = "一般贸易只能是“是”, “否”中的一个"
  )
  private String generaltrading;

  /** 包税 */
  @ExcelProperty("包税")
  @EnumsString(value = { "是", "否" }, message = "包税只能是“是”, “否”中的一个")
  private String taxgrossup;

  /** 保险 */
  @ExcelProperty("保险")
  @EnumsString(value = { "是", "否" }, message = "保险只能是“是”, “否”中的一个")
  private String insure;

  /** EORI */
  @ExcelProperty("EORI")
  @Size(max = 50, message = "EORI长度不能超过50")
  private String eori;

  /** VAT税号 */
  @ExcelProperty("VAT税号")
  @Size(max = 50, message = "VAT税号长度不能超过50")
  private String vatduty;

  /** 自定义单号 */
  @ExcelProperty("自定义单号")
  @Size(max = 50, message = "自定义单号长度不能超过50")
  private String customordernumber;

  /** 分摊方式 */
  @ExcelProperty("分摊方式")
  @Size(max = 50, message = "分摊方式长度不能超过50")
  private String allocationmethod;

  /** 货件id */
  @ExcelProperty("货件id")
  @LongString(message = "货件id数值格式不正确", label = "货件id")
  private String shipmentIds;

  /** 净重量 */
  @ExcelProperty("净重量")
  @DecimalString(message = "净重量小数格式不正确", label = "净重量")
  private String netWeight;

  /** 毛重量 */
  @ExcelProperty("毛重量")
  @DecimalString(message = "毛重量小数格式不正确", label = "毛重量")
  private String grossWeight;

  /** 总体积 */
  @ExcelProperty("总体积")
  @DecimalString(message = "总体积小数格式不正确", label = "总体积")
  private String totalVolume;
}
